const editorOutlineText = document.getElementById('editorOutlineText');
let conversationId;

// 点击按钮时触发
document.getElementById('generateOutlineBtn').addEventListener('click', async function () {
    const inputText = document.getElementById('inputPPTText').value; // 获取上方文本编辑器的内容
    editorOutlineText.setAttribute('readonly', 'readonly');
    editorOutlineText.value = '';
    await fetchOutline(inputText); // 调用 fetchOutline 函数
});

document.getElementById("createPptBtn").addEventListener('click',async function(){
    await fetchPpt(conversationId);
})

// 发送请求获取流式响应数据
async function fetchOutline(text) {
    const formData = new FormData();
    formData.append('usrText', text);

    try {
        // 向后台发送请求
        const response = await fetch('/createOutline', {
            method: 'POST',
            body: formData  // 将文本内容发送给后台
        });

        // 判断请求是否成功
        if (!response.ok) {
            console.error('请求失败', response.status);
            return;
        }
        conversationId = response.headers.get("conversationId");
        // 获取响应的可读流读取器
        const reader = response.body.getReader();
        // 创建 UTF-8 解码器
        const decoder = new TextDecoder('utf-8');
        // 获取用于显示大纲内容的 DOM 元素
        const outputElement = document.getElementById('editorOutlineText');

        while (true) {
            // 读取数据块
            const { done, value } = await reader.read();
            if (done) {
                editorOutlineText.removeAttribute('readonly');
                break;
            }
            // 解码二进制数据为字符串
            const chunk = decoder.decode(value);
            // 将解码后的字符串追加到文本编辑器中
            outputElement.value += chunk;
        }
    } catch (error) {
        console.error('请求过程中出现错误:', error);
    }
}

async function fetchPpt(conversationId){
    const formData = new FormData();
    formData.append('conversationId',conversationId);

    try{
        const response = await fetch('/createPpt',{
            method : 'POST',
            body : formData
        })
        // 判断请求是否成功
        if (!response.ok) {
            console.error('请求失败', response.status);
            return;
        }
        // 获取响应的可读流读取器
        const reader = response.body.getReader();
        // 创建 UTF-8 解码器
        const decoder = new TextDecoder('utf-8');
        // 获取用于显示大纲内容的 DOM 元素
        const outputElement = document.getElementById('editorOutlineText');

        while (true) {
            // 读取数据块
            const { done, value } = await reader.read();
            if (done) {
                editorOutlineText.removeAttribute('readonly');
                break;
            }
            // 解码二进制数据为字符串
            const chunk = decoder.decode(value);
            // 将解码后的字符串追加到文本编辑器中
            outputElement.value += chunk;
        }
    }catch (error) {
        console.error('请求过程中出现错误:', error);
    }

}

